package com.uacp.sgb.datos.dominio.persistencia.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import com.uacp.sgb.datos.dominio.entidades.Dependencia;
import com.uacp.sgb.datos.dominio.entidades.Trabajador;
import com.uacp.sgb.datos.dominio.persistencia.util.UtilManager;

public class TrabajadorDao 
{
	public static Trabajador buscarPorDni(String dni) 
	{
//		if(dni == null)
//			return null;
//		
//		Trabajador trabajador = null;
//		
//		EntityManager em = UtilManager.getEntityManager();
//		
//		Query query = em.createNamedQuery("Trabajador.buscarPorDni");
//		query.setParameter("dni", dni);
//		
//		try
//		{
//			trabajador = (Trabajador)query.getSingleResult();
//		}
//		catch(NoResultException nre)
//		{
//			em.close();
//			return null;
//		}
//		
//		em.close();
//		
//		return trabajador;
		
		return null;
	}
	
	public static List<Trabajador> listar() 
	{		
		EntityManager em = UtilManager.getEntityManager();
		
		Query query = em.createNamedQuery("Trabajador.listar", Trabajador.class);
		
		List<Trabajador> trabajadores = query.getResultList();
		
		em.close();
		
		return trabajadores;
	}
	
	public static List<Trabajador> listarPorArea(Dependencia dependencia) 
	{		
		EntityManager em = UtilManager.getEntityManager();
		
		Query query = em.createNamedQuery("Trabajador.listarPorDependencia", Trabajador.class);
		query.setParameter("codigo", dependencia.getCodigo());
		
		List<Trabajador> trabajadores = query.getResultList();
		
		em.close();
		
		return trabajadores;
	}
	
	public static void guardar(Trabajador trabajador) 
	{
		EntityManager em = UtilManager.getEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		em.persist(trabajador);
		tx.commit();
		em.close();		
	}

}
